home *** CD-ROM | disk | FTP | other *** search
/ Day Cry / Day Cry CD.bin / oh_towns / taropyon / splib / splib.lzh / PRG / LHX / PATH.C < prev    next >
C/C++ Source or Header  |  1992-12-08  |  1KB  |  86 lines

  1. /***********************************************************
  2.         path.c -- convert to MS-DOS's pathname
  3. ***********************************************************/
  4. #include    "lh386.h"
  5.  
  6. #include    <stdio.h>
  7. #include    <string.h>
  8. #include    "lh.h"
  9.  
  10. #ifdef    __HIGHC__
  11. #    pragma    On(Align_labels);
  12. #endif
  13.  
  14.  
  15. char       *form_name(unsigned char *p, int i)
  16. {
  17.     int         j, kflg;
  18.  
  19.     kflg = 0;
  20.     for (j = 0; j < i; j++)
  21.     {
  22.         if (*p == 0)
  23.             break;
  24.         else if (kflg)
  25.             kflg = 0;
  26.         else if (iskanji(*p))
  27.             kflg = 1;
  28.         else if (strchr("\"*+,./:;<=>?[\\]|\xff", *p) || *p <= ' ' ||
  29.                  *p == swchar)
  30.             *p = '_';
  31.         p++;
  32.     }
  33.     if (kflg)
  34.         p--;
  35.     *p = '\0';
  36.     return (char *) p;
  37. }
  38.  
  39. void        form_identifier(char *p)
  40. {
  41.     char       *q, *r;
  42.  
  43.     q = strrchr(p, '.');
  44.     if (q)
  45.     {
  46.         *q = '\0';
  47.         r = form_name((uchar *) p, 8);
  48.         *r++ = '.';
  49.         q++;
  50.         form_name((uchar *) q, 3);
  51.         strcpy(r, q);
  52.     } else
  53.     {
  54.         form_name((uchar *) p, 8);
  55.     }
  56. }
  57.  
  58. void        form_path(char *p)
  59. {
  60.     char       *q, *r;
  61.  
  62.     if (*p == DELIM)
  63.         p++;
  64.     r = p;
  65.     q = strchr(p, DELIM);
  66.     while (q)
  67.     {
  68.         *q = '\0';
  69.         form_identifier(p);
  70.         r = stpcpy(r, p);
  71.         *r++ = DELIM;
  72.         p = q + 1;
  73.         q = strchr(p, DELIM);
  74.     }
  75.     form_identifier(p);
  76.     strcpy(r, p);
  77. }
  78.  
  79. /*
  80. #ifdef DEBUG
  81. void main(int argc, char *argv[])
  82. {    form_path(argv[1]);
  83.     printf("%s\n", argv[1]); }
  84. #endif
  85. */
  86.